In a single node or a distributed/scaleout cluster environment, allocating resources can be a challenging task. The task is further complicated when attempting to ensure that the resources are allocated fairly to all of the clients using the available resources. For example, any one client should not be able to have an unfairly large share of the available resources. At the same time, there is a need to satisfy quality of service (QOS) requirements.
More specifically, data protection operations (e.g., backup, restore) are often associated with resource allocation issues and quality of service (QOS) issues. These issues arise when some clients are using too many resources and other clients are therefore neglected or unable to acquire the necessary resources. In addition, the QOS often suffers when the demand for resources is more than the node or cluster can bear. To avoid this circumstance or to correct this circumstance, there is a need to throttle requests from any particular client at any particular time. Consequently, systems and methods are needed to fairly allocate resources while, at the same time, ensuring or meeting quality of service requirements.